Pure Java à»äOÇÃï`âÊï˚ñ@DžǬǢǃ
ëÂîºÇà Java ÉAÉvÉäÉPÅ[ÉVÉáÉìÇ≈ÇÕÅAÉÜÅ[ÉUÉCÉìÉ^ÉtÉFÅ[ÉXÇÃï`âÊÇçsǧÇÃÇ…ÅAïÅí ÇÃÅu100% Pure JavaÅvAPI ÇégǶnjè\ï™Ç≈Ç∑ (ÇΔÇ´Ç…édï˚Ç»Ç≠ǪǧÇ∑ÇÈèÍçáLJdžÇËÇ‹Ç∑Ç™)ÅBDZǧǵÇΩÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÅAÉ{É^ÉìÇ‚É`ÉFÉbÉNÉ{ÉbÉNÉXǻǫä˘ë∂Çà AWT ÉRÉìÉ|Å[ÉlÉìÉgÇΔÅAComponent ÉNÉâÉXÇÃìΔé©ÉTÉuÉNÉâÉXÇëgÇ›çáÇÌÇπǃégópǵNjÇ∑ÅBå„é“ÇÃèÍçáÅAAWT Çà Graphics ÉNÉâÉXÇ™íÒãüÇ∑ÇÈÉOÉâÉtÉBÉbÉNÉXÉvÉäÉ~ÉeÉBÉuÇégópǵǃÉRÉìÉ|Å[ÉlÉìÉgì‡ïîÇï`âÊǵNjÇ∑ÅB(Swing Ç‚ IFC ǻǫÅAÇÊÇËè„à ÇÃÉNÉâÉXÉâÉCÉuÉâÉäÇ…ÇÊǡǃíÒãüÇ≥ÇÍÇÈÉRÉìÉ|Å[ÉlÉìÉgÇégópÇ∑ÇÈèÍçáLJdžÇËÇ‹Ç∑Ç™ÅADZÇÍLJåãã«ÇÕ Graphics ÇégópǵNjÇ∑ÅB)
ǵǩǵÅAÉvÉâÉbÉgÉtÉHÅ[ÉÄÇÃÉcÅ[ÉãÉ{ÉbÉNÉXÇ™íÒãüÇ∑ÇÈï`âÊÉTÅ[ÉrÉXÇégópÇµÇ»ÇØÇÍnjǻÇÁǻǢ Java ÉRÅ[ÉhLJdžÇËÇ‹Ç∑ÅBÉvÉâÉbÉgÉtÉHÅ[ÉÄÇÃÉcÅ[ÉãÉ{ÉbÉNÉXÇÃã@î\Ç…ëŒâûÇ∑ÇÈ Java API ÇíÒãüÇ∑ÇÈDZÇΔÇñ⁄ìIÇΔÇ∑ÇÈ Java ÉâÉCÉuÉâÉäǻǫǙǪǧÇ≈Ç∑ÅBó·Ç¶ÇŒÅAÉAÉbÉvÉãÇà QuickTime For Java Ç‚ OpenGL Java ÉCÉìÉ^ÉtÉFÅ[ÉXÇÕǪÇÃÇÊǧǻÉâÉCÉuÉâÉäÇÃó·Ç≈Ç∑ÅB
DZǧǵÇΩÉRÅ[ÉhÇÕÉlÉCÉeÉBÉuÉÅÉ\ÉbÉhÇ‹ÇΩÇÕ JDirect ÇégǡǃÅAÉcÅ[ÉãÉ{ÉbÉNÉXÇåƒÇ—èoÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBÇ¢Ç∏ÇÍÇÃã@ç\LJï ÇÃï∂èëÇ≈âê‡Ç≥ÇÍǃǢNjÇ∑Ç™ÅAǢǥï`âÊÇçsǧíiDžǻǡǃñ‚ëËÇ™ãNDZÇËÇ‹Ç∑ÅBǪÇÍÇÕÅAï`âÊÇÃÉRÅ[ÉhÇ™ÉRÉìÉ|Å[ÉlÉìÉgÇ…ï`âÊÇ∑ÇÈÇÃÇ…ïKóvÇ»ÉäÉ\Å[ÉXÇÇ«ÇÃÇÊǧDžälìæÇ∑ÇÈÇ©ÇΔǢǧñ‚ëËÇ≈Ç∑ÅBó·Ç¶ÇŒÅAQuickDraw ÇÃåƒÇ—èoǵÇçsǧëOÇ…ÅAìKêÿÇ» GrafPort ÇéÊìæÇµÅAGrafPort ÇÃå¥ì_ÇΔÉNÉäÉbÉvóÃàÊÇê›íËÇ∑ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB
DZÇÍÇÕ Mac OS ÇæÇØÇ≈ÇÕÇ»Ç≠ÅAÇ«ÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄDžLJdžǃÇÕÇ‹ÇÈñ‚ëËÇ≈Ç∑ (ïKóvÇ»ÉäÉ\Å[ÉXÇÃç◊ïîÇÕÇ‡ÇøÇÎÇÒÉvÉâÉbÉgÉtÉHÅ[ÉÄå≈óLÇ≈Ç∑Ç™)ÅBDZÇÃÇΩÇflÅAÉTÉìÅEÉ}ÉCÉNÉçÉVÉXÉeÉÄÉYÇÕÅADrawingSurface (à»â∫Ç≈ÇÕÅuï`âÊñ ÅvÇΔLJåƒÇ—Ç‹Ç∑) ÇΔëçèÃÇ≥ÇÍÇÈ API åQÇíËã`ǵÅAComponent ÉIÉuÉWÉFÉNÉgÇ©ÇÁÉlÉCÉeÉBÉuÉEÉBÉìÉhÉEÇÃÉVÉXÉeÉÄÉäÉ\Å[ÉXÇ÷ÇÃëŒâûïtÇØÇ≈égópÇ≈Ç´ÇÈÇÊǧDžǵNjǵÇΩÅB
êÊì™ÉyÅ[ÉWÇ…ñflÇÈ
é¿åªï˚ñ@
Ç‹Ç∏ÅAï`âÊñ ÇΔǵǃê≥ǵǢéÌófiÇà Component ÉNÉâÉXÇëIÇÒÇ≈Ç≠ÇæÇ≥Ç¢ÅBï`âÊñ Ç…ÇÕÉlÉCÉeÉBÉuÉsÉAÇî∫Ç¡ÇΩÉRÉìÉ|Å[ÉlÉìÉgÇ™ïKóvÇ»ÇΩÇflÅAåyó ÉRÉìÉ|Å[ÉlÉìÉgÇÕégǶNjÇπÇÒÅBÇ‹ÇΩÅAButton Ç‚ Choice ǻǫÅAAWT é©êgÇ™Ç∑Ç≈Ç…ï`âÊçœÇ›ÇÃÉRÉìÉ|Å[ÉlÉìÉgÇ…ìΔé©ÇÃï`âÊÇçsǧÇÃÇÕé~ÇflÇΩï˚ǙǢǢÇ≈ǵÇÂǧÅBǪǧǢǧÇÌÇØÇ≈ÅAç≈LJìÆçÏÇ™ó«çDÇ» Component É^ÉCÉvÇÕÅACanvasÅAPanel Ç®ÇÊÇ—ÅAëS Window É^ÉCÉv (WindowÅAFrameÅADialog) Ç≈Ç∑ÅB
DrawingSurface ÇÃéÊìæï˚ñ@
sun.awt.DrawingSurface ÉCÉìÉ^ÉtÉFÅ[ÉXÇÕÅAÉlÉCÉeÉBÉuÇ»ï`âÊñ Ç…ä÷Ç∑ÇÈèÓïÒÇ…ÉAÉNÉZÉXÇ∑ÇÈÇΩÇflÇ…égópǵNjÇ∑ÅBDZÇÃÉCÉìÉ^ÉtÉFÅ[ÉXÇÕîÒåyó ÉRÉìÉ|Å[ÉlÉìÉgÇÃÉsÉAÇΔÅAÉIÉtÉXÉNÉäÅ[ÉìÉOÉâÉtÉBÉbÉNÉXópÇ…çÏê¨ÇµÇΩ Image Ç…ÇÊǡǃé¿ëïÇ≥ÇÍǃǢNjÇ∑ÅBÉCÉìÉ^ÉtÉFÅ[ÉXÇ…ÇÕóBàÍÅAgetInfo ÇΔǢǧÉÅÉ\ÉbÉhÇæÇØÇ™Ç†ÇËÅADrawingSurfaceInfo ÉIÉuÉWÉFÉNÉgÇï‘ǵNjÇ∑ÅBDZÇÍÇ™éÂÇ…ïKóvÇ»ÉIÉuÉWÉFÉNÉgÇ≈Ç∑ÅB
à»â∫Ç…é¶Ç∑ÇÃÇÕÅAtheComponent ÇΔǢǧ Component ÉIÉuÉWÉFÉNÉgÇ…ëŒâûÇ∑ÇÈ DrawingSurfaceInfo ÇéÊìæÇ∑ÇÈ Java ÉRÅ[ÉhÇÃífï–Ç≈Ç∑ÅB
import sun.awt.*;
...
DrawingSurface ds = (DrawingSurface)theComponent.getPeer();
DrawingSurfaceInfo dsi = ds.getDrawingSurfaceInfo();
|
(JNI ÇégǡǃÉlÉCÉfÉBÉuÉRÅ[ÉhÇ©ÇÁÇ≈LJìØÇ∂DZÇΔÇ™Ç≈Ç´Ç‹Ç∑Ç™ÅALJǡÇΔñ ì|Ç≈Ç∑ÅB)
ï`âÊï˚ñ@
ï`âÊÇénÇflÇÈëOÇ…ÅADrawingSurfaceInfo Çà lock ÉÅÉ\ÉbÉhÇåƒÇ—èoǵÅAï`âÊÇèIǶÇΩÇÁÅAìØÇ∂Ç≠ DrawingSurfaceInfo Çà unlock ÉÅÉ\ÉbÉhÇåƒÇ—èoÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBlock ÉÅÉ\ÉbÉhÇÕ QuickDraw ÇÃèÛë‘ê›íËÇçsÇ¢ÅAGrafPort Çï`âÊâ¬î\Ç»èÛë‘Ç…ê›íËǵNjÇ∑ÅB
ï`âÊíÜÇ…ÅAëºÇÃÉXÉåÉbÉhÇÃâ∫Ç≈ìÆçÏÇ∑ÇÈ AWT ÉRÅ[ÉhÇ…É|Å[Ég (ÉcÅ[ÉãÉ{ÉbÉNÉXÇÃëºÇÃëÂàÊìIèÛë‘) Ç™âÛÇ≥ÇÍÇÈÇÃÇñhÇÆÇ…ÇÕÅADrawingSurfaceInfo Çà lock ÉÅÉ\ÉbÉhÇåƒÇ—èoÇ∑ëOÇ…ÅAÉcÅ[ÉãÉ{ÉbÉNÉXÇÃÉçÉbÉN (Toolbox.LOCK) Ç≈ìØä˙ÇéÊÇÈïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍDžǬǢǃÇÕÅuTechnote 1153ÅFMRJ Ç©ÇÁï°êîÉXÉåÉbÉhÇ≈à¿ëSÇ…ÉcÅ[ÉãÉ{ÉbÉNÉXÇóòópÇ∑ÇÈï˚ñ@ÅvÇ≈è⁄ç◊Çê‡ñæÇµÇƒÇ¢Ç‹Ç∑ÅBâ∫ÇÃÉRÅ[ÉhÇÃífï–ÇÕÅAǪÇÃï˚ñ@Çï\ǵÇΩLJÇÃÇ≈Ç∑ÅB
èdóvÅF
ÉcÅ[ÉãÉ{ÉbÉNÉXÉçÉbÉNÇÃìØä˙ÇÕÅAAWT Ç™óBàÍï€éùÇ∑ÇÈíÜêSìIÇ»ÉZÉ}ÉtÉHÇÃälìæÇ…džÇΩÇËÅAsynchronized Ç≈éwíËÇ≥ÇÍÇΩìØä˙ÉuÉçÉbÉNÇ™èIóπÇ∑ÇÈÇ‹Ç≈ÇÕÅAëºÇà Java ÉXÉåÉbÉhÇ‚ÉlÉCÉeÉBÉuÉRÅ[ÉhÇÃÉAÉvÉäÉPÅ[ÉVÉáÉìÇÕÉcÅ[ÉãÉ{ÉbÉNÉXÇ…ÉAÉNÉZÉXÇ≈Ç´Ç‹ÇπÇÒÅBDZÇÍÇÕéüÇÃDZÇΔÇà”ñ°ÇµÇ‹Ç∑ÅB
- ÉçÉbÉNÇÃéûä‘ÇÇ≈Ç´ÇÈÇæÇØíZÇ≠ǵǃÇ≠ÇæÇ≥Ç¢ÅBÉuÉçÉbÉNÇ…ì¸Ç¡ÇΩÇÁÇΩÇæÇøÇ…ï`âÊÇçœÇ‹ÇπÅAÇ∑ÇÆÇ…ÉuÉçÉbÉNÇèoÇ»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅB
- ï`âÊñ ÇÉçÉbÉNǵǃǢÇÈä‘ÅAëºÇà AWT åƒÇ—èoǵÇçsǡǃÇÕÇ¢ÇØÇ‹ÇπÇÒ (ï`âÊÇçsǧÉXÉåÉbÉhÇ™ÅAAWT åƒÇ—èoǵÇçsǧïKóvÇÃdžÇÈìØÇ∂ÉAÉvÉäÉPÅ[ÉVÉáÉìÇÃëºÇÃÉXÉåÉbÉhÇ…ëŒÇµÇƒÉuÉçÉbÉNÇ∑ÇÈǩLJǵÇÍǻǢèàóùÇÇµÇƒÇ‡Ç¢ÇØÇ‹ÇπÇÒÅBǪǧÇ∑ÇÈÇΔÉfÉbÉhÉçÉbÉNÇ™ãNDZÇÈâ¬î\ê´Ç™Ç†ÇËÇ‹Ç∑)ÅB
- èàóùÇ©ÇÁî≤ÇØÇÈç€Ç…ÇÕÅAç≈å„Ç…ïKÇ∏
unlock ÇåƒÇ—èoǵǃÇ≠ÇæÇ≥Ç¢ÅBǪÇÍÇ…ÇÕÅAfinally êflÇÃíÜÇ≈ unlock ÇåƒÇ—èoÇ∑ÇÃÇ™ÇÊÇ¢Ç≈ǵÇÂǧÅB
|
DZǧǵǃï`âÊñ ÇÉçÉbÉNÇ∑ÇÈÇΔÅAQuickDraw Ç≈ Component ÉIÉuÉWÉFÉNÉgÇ…ï`âÊÇ∑ÇÈèÄîıÇ™Ç≈Ç´Ç‹Ç∑ÅBGrafPort ÇÕåªç›ÇÃÉ|Å[ÉgÇ…ÅAÉçÅ[ÉJÉãç¿ïWÇà (0,0) ÇÕÉRÉìÉ|Å[ÉlÉìÉgÇÃç∂è„äpÇ…ÅAclipRgn ÇÕÉRÉìÉ|Å[ÉlÉìÉgÇÃâ¬éãóÃàÊÇ…ê›íËÇ≥ÇÍÇ‹Ç∑ (DZÇÍÇ…ÇÕëºÇÃîÒåyó ÇÃéqÉRÉìÉ|Å[ÉlÉìÉgÇ™êËÇflÇÈóÃàÊÇÕä‹Ç‹ÇÍÇ‹ÇπÇÒ)ÅB
DrawingSurfaceInfo.getBounds ÉÅÉ\ÉbÉhÇåƒÇ—èoÇ∑ÇΔÅAComponent ÇÃÉoÉEÉìÉfÉBÉìÉOÉ{ÉbÉNÉXÇÉçÅ[ÉJÉãç¿ïWÇ≈éÊìæÇ≈Ç´Ç‹Ç∑ÅBDZÇÃåƒÇ—èoǵÇÕÅADrawingSurface Ç™ÉçÉbÉNÇ≥ÇÍǃǢÇÈä‘Ç…åƒÇ—èoǵǃLJà¿ëSÇ≈Ç∑ÅB
ï`âÊÇ™çœÇÒÇæÇÁÅAà»ëOÇà GrafPort Çïúå≥Ç∑ÇÈïKóvÇÕdžÇËÇ‹ÇπÇÒÅBǵǩǵÅAComponent ÉIÉuÉWÉFÉNÉgÇà GrafPort ÇÃèÛë‘ÇÃÇ§ÇøÅAïœçXǵÇΩLJÇà (ÉNÉäÉbÉsÉìÉOÅAêFǻǫ) ÇÕå≥Ç…ñflÇ≥Ç»ÇØÇÍnjǻÇËÇ‹ÇπÇÒÅBǪǵǃÅAÇ‡ÇøÇÎÇÒï`âÊñ ÇÃÉAÉìÉçÉbÉNÇçsǧïKóvǙdžÇËÇ‹Ç∑ÅB
ǪÇÃï˚ñ@ÇÅAè„ãLÇÃÉRÅ[ÉhÇÃífï–Ç…ë±ÇØÇƒÅAé¶ÇµÇ‹Ç∑ÅB
import QuickdrawFunctions; // SDK Çà JDirect ÉTÉìÉvÉãÉRÅ[ÉhÇÊÇË
import com.apple.mrj.macos.toolbox.Toolbox;
...
synchronized( Toolbox.LOCK ) {
dsi.lock();
try{
Rectangle bounds = dsi.getBounds();
QuickdrawFunctions.MoveTo(bounds.left, bounds.top);
QuickdrawFunctions.LineTo(bounds.width-1, bounds.height-1);
}finally{
dsi.unlock();
}
}
|
WindowPtr ÇÃóòóp
èÛãµÇ…ÇÊǡǃÇÕ (ó·Ç¶ÇŒÅAPalette Manager Çíºê⁄ëÄçÏÇ∑ÇÈèÍçáǻǫ)ÅAComponent ÉIÉuÉWÉFÉNÉgÇ™é˚óeÇ≥ÇÍǃǢÇÈÉEÉBÉìÉhÉEÇà Mac OS WindowPtr Çí≤Ç◊ÇÈïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÕÉRÉìÉ|Å[ÉlÉìÉgÇà GrafPort ÇΔìØÇ∂Ç≈ÇÕdžÇËÇ‹ÇπÇÒÅBMRJ 2.1 ÇÕï`âÊêÍópÇà GrafPort ÇçÏê¨Ç∑ÇÈÇΩÇflÅAWindowPtr Ç…íºê⁄ï`âÊÇ∑ÇÈDZÇΔÇÕdžÇËÇ‹ÇπÇÒÅBWindowPtr Ç…ÉAÉNÉZÉXÇ∑ÇÈèÍçáÇ≈LJÅAï`âÊñ⁄ìIÇ…égǡǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBï`âÊÇÕïKÇ∏ DrawingSurface Çà GrafPort Ç…çsǡǃÇ≠ÇæÇ≥Ç¢ÅB
èdóvÅF
GetWindow ÉÅÉ\ÉbÉhÇÕ MRJ 2.1 Ç≈êVǵÇ≠í«â¡Ç≥ÇÍÇΩLJÇÃÇ≈Ç∑ÅBDZÇÍÇÕ MRJ 2.0 Ç…ÇÕdžÇËÇ‹ÇπÇÒÅBMRJ 2.0 Ç≈DZÇÃÉÅÉ\ÉbÉhÇåƒÇ—èoÇ∑ÇΔÉGÉâÅ[Ç…Ç»ÇËÇ‹Ç∑ÅB
|
WindowPtr ÇÕéüÇÃÉRÅ[ÉhÇ≈éÊìæÇµÇ‹Ç∑ÅBGrafPort ÇΔ GDevice LJìØÇ∂ÇÊǧDžǵǃéÊìæÇ∑ÇÈDZÇΔÇ™Ç≈Ç´Ç‹Ç∑ÅB
MacDrawingSurface mds = (MacDrawingSurface) dsi.getSurface();
int windowPtr = mds.getWindow(); // WindowPtr Ç int Ç…ÉLÉÉÉXÉg
int grafPtr = mds.getPort(); // CGrafPtr Ç int Ç…ÉLÉÉÉXÉg
int gdevice = mds.getDevice(); // GDHandle Ç int Ç…ÉLÉÉÉXÉg
|
DZÇÍÇÁÇÃílÇdžNjÇËí∑Ç¢ä‘ï€éùǵǃÇÕÇ¢ÇØÇ‹ÇπÇÒÅBComponent ÉIÉuÉWÉFÉNÉgÇÃÉsÉAÇ™îjä¸Ç≥ÇÍÇΩÇÁLJǧóLå¯Ç≈ÇÕǻǢǩÇÁÇ≈Ç∑ÅBÉsÉAÇ™îjä¸Ç≥ÇÍÇÈèÍçáÇΔÇÕÅAÉRÉìÉ|Å[ÉlÉìÉgÇ‹ÇΩÇÕǪÇÃêeÇ™îÒï\é¶Ç…Ç≥ÇÍÇΩÇËÅAÉEÉBÉìÉhÉEÇ™ï¬Ç∂ÇÁÇÍÇΩèÍçáÇ≈Ç∑ÅBà¿ëSÇÃÇΩÇflÇ…ÇÕÅADrawingSurface Ç™ÉçÉbÉNÇ≥ÇÍǃǢÇÈä‘ÇæÇØÇµÇ©ÅAéÊìæÇΔÉAÉNÉZÉXÇçsÇÌǻǢDZÇΔÇ≈Ç∑ÅB
èdóvÅF
MRJ 2.1 Ç…ÇÕÅAìØàÍÇà Component Ç‚ Image Ç…ëŒÇµÇƒÉlÉCÉeÉBÉuÉÅÉ\ÉbÉhÇ…ÇÊÇÈï`âÊÇΔ Java Ç©ÇÁÇÃï`âÊ (java.awt.Graphics Çégóp) Çç¨ç›Ç≥ÇπÇÈèÍçáÇ…î≠ê∂Ç∑ÇÈÅAdžÇÈÉoÉOǙdžÇËÇ‹Ç∑ÅBDZÇÃÉoÉOÇâÒîÇ∑ÇÈÇ…ÇÕÅAï`âÊÇçsǧÇ∑Ç◊ǃÇà DrawingSurface Ç…ëŒÇµÇƒç≈í· 1 âÒÇÕ getWindow ÅAgetPort ÅAgetDevice ÇÃÇ¢Ç∏ÇÍÇ©ÇåƒÇ—èoÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅBDZÇÍÇÁÇÃÉÅÉ\ÉbÉhÇÃÇ«ÇÍǩǙåƒÇ—èoÇ≥ÇÍÇÈÇ‹Ç≈ÅAMRJ 2.1 ÇÕÉlÉCÉeÉBÉuÉÅÉ\ÉbÉhÇ…ÇÊÇÈï`âÊÇ™çsÇÌÇÍÇÈDZÇΔÇ™ÇÌÇ©ÇÁǻǢÇΩÇflÅAJava Ç…ÇÊÇÈï`âÊÇΔÉlÉCÉeÉBÉuÉÅÉ\ÉbÉhÇ…ÇÊÇÈï`âÊÇΔÇäÆëSÇ…ìØä˙Ç∑ÇÈDZÇΔÇ™Ç≈ǴǻǢÇÃÇ≈Ç∑ÅB
|
êÊì™ÉyÅ[ÉWÇ…ñflÇÈ
å›ä∑ê´
DrawingSurface API ÇÕ MRJ 2.0 à»ç~Ç≈LJé¿ëïÇ≥ÇÍǃǢNjÇ∑Ç™ÅAMRJ 2.1 ÇÃé¿ëïÇÃï˚Ç™ÇÊÇËà¿íËǵǃǢNjÇ∑ÅB
MacDrawingSurface.getWindow ÉÅÉ\ÉbÉhÇÕ MRJ 2.1 Ç≈í«â¡Ç≥ÇÍNjǵÇΩÅBMRJ 2.0 Ç…ÇÕDZÇÍÇ™é¿ëïÇ≥ÇÍǃǢǻǢÇÃÇ≈ÅADZÇÃÉÅÉ\ÉbÉhÇåƒÇ—èoÇ∑ÉNÉâÉXÇÉçÅ[ÉhǵÇÊǧÇΔÇ∑ÇÈÇΔÅAÉNÉâÉXÉçÅ[É_Ç™ÉGÉâÅ[Çï‘ǵNjÇ∑ÅB
Ç∑Ç◊ǃÇÃÉvÉâÉbÉgÉtÉHÅ[ÉÄÇà Java é¿ëïÇ™ DrawingSurface ÇÉTÉ|Å[ÉgǵǃǢÇÈÇÌÇØÇ≈ÇÕdžÇËÇ‹ÇπÇÒÅBÉTÉìÇÕÅAsun.*ÉNÉâÉXÇÕïWèÄÉTÉ|Å[ÉgÇà Java API åQÇ…ä‹Ç‹ÇÍǻǢDZÇΔÇñæåæÇµÇƒÇ¢Ç‹Ç∑ÅBÉTÉìÇà JDK 1.1 à»ç~ÇÕ DrawingSurface ÇÉTÉ|Å[ÉgǵǃǢNjÇ∑ÅBìñëRǻǙÇÁÅAï`âÊÇÃÇΩÇflÇ…ïKóvÇ»ãÔëÃìIÇ» OS åƒÇ—èoǵÇÕÉvÉâÉbÉgÉtÉHÅ[ÉÄå≈óLÇ≈Ç∑ÅBMacDrawingSurface ÉNÉâÉXÇÕë∂ç›ÇµÇ»Ç¢èÍçáǙdžÇËÇ‹Ç∑ÅBëºÇà Java é¿ëïÇ…Ç®ÇØÇÈ DrawingSurface ÇÃégópï˚ñ@DžǬǢǃÇÕÅAêªïiÉxÉìÉ_Ç©ÇÁÉhÉLÉÖÉÅÉìÉgÇì¸éËǵǃí≤Ç◊ÇÈïKóvǙdžÇËÇ‹Ç∑ÅB
êÊì™ÉyÅ[ÉWÇ…ñflÇÈ
éQçlï∂å£
- ÅuTechnote 1153ÅFMRJ Ç©ÇÁï°êîÉXÉåÉbÉhÇ≈à¿ëSÇ…ÉcÅ[ÉãÉ{ÉbÉNÉXÇóòópÇ∑ÇÈï˚ñ@Åv
ÉcÅ[ÉãÉ{ÉbÉNÉXÇÃÉçÉbÉNÇΔǪÇÃégópï˚ñ@Ç™ê‡ñæÇ≥ÇÍǃǢNjÇ∑ÅBMac ÇÃÉcÅ[ÉãÉ{ÉbÉNÉXÇópǢǃï`âÊÇçsǧì«é“ÇÕïKì«Ç≈Ç∑ÅB
êÊì™ÉyÅ[ÉWÇ…ñflÇÈ
|